Notas de clase: Sistemas Lineales
Clase 1: Presentación del curso
Clase 2: Repaso de ecuaciones diferenciales ordinarias
Definiciones
- Ecuación diferencial: Ecuación que contiene derivadas
- Ecuación diferenciales ordinarias: Aplicación de las ecuaciones diferenciales a sistemas donde los parámetros son concentrados (todas las propiedades del sistema se resumen a un punto, es decir, se minimizan las variables independientes necesarias). Ejemplo:

- Ecuaciones diferenciales parciales: Aplicación a sistemas con parámetros distribuidos (las propiedades del sistema requieren más de una variable para expresarse)
- Ecuaciones lineales: Se dice que una ecuación diferencial de n-ésimo orden es lineal si
es lineal en
. Dicho de otra forma, la ecuación diferencial de n-ésimo orden es lineal si tiene la forma
. - Ecuaciones lineales con coeficientes constantes: Se les conoce como LTI (Linear-Time-Invariant). Los coeficientes que acompañan a la variable dependiente no cambian con el tiempo, por tanto, son de la forma
Existen métodos analíticos para resolver estas ecuaciones. El término
tiene significado como la entrada del sistema. - Problema de valor inicial: Es un problema de la forma

- Solución general de un problema de valor inicial: Se calcula la solución general como la suma de la solución de la ecuación complementaria homogénea (
) y una solución particular de la ecuación no homogénea (
). De forma tal, la solución general viene dada por
. - Solución
de la ecuación homogénea (
): Se obtiene el polinomio característico y se resuelve para obtener los valores característicos. Debe lidiarse con los casos de valores característicos reales diferentes, complejos diferentes y raíces múltiples. El polinomio característico de
es de la forma
. - Solución
de la ecuación no homogénea: Se puede resolver aplicando el método de coeficientes indeterminados (método especial pero simple) o el método de variación de parámetros (método general pero complejo). Para ambos métodos consultar el libro de Dennis G. Zill & Warren S. Wright.
Ejemplos
1) La ecuación diferencial como definición de un campo vectorial
t=-3:0.5:12; y=-3:0.5:12; % define grid of values in t and y directions
[T,Y]=meshgrid(t,y); % creates 2d matrices
dT=ones(size(T)); % dt=1 for all points
dY=27-3*Y; % dy=(t^2-y)*dt: this is the ODE
N=sqrt(dT.^2+dY.^2); % magnitude of arrows
dT=dT./N; % normalize arrows to get all same length
quiver(T,Y,dT,dY) % draw arrows (t,y) --> (t+dt,y+dy)
axis([-4 13 -4 13]) % repeat adjustments...
plot(t,y,'r','LineWidth',2);
2) Solución de ecuación homogénea
Comprobación de la solución en MatLab
ode=diff(y,6)+4*diff(y,5)+7*diff(y,4)+6*diff(y,3)+2*diff(y,2)==0
ode(x) =

ySol(x) = dsolve(ode)
ySol(x) =

3) Solución de ecuación no homogénea
Comprobación de la solución en MatLab
ode2=diff(y,2)+4*diff(y)+4*y==x+2*exp(-2*x)
ode2(x) =

ySol2(x) = simplify(dsolve(ode2))
ySol2(x) =

Solución con condiciones iniciales
conds = [y(0)==y_0; y(1)==y_1];
ySol3(x)=dsolve(ode2,conds)
ySol3(x) =

Clase 3: Ecuaciones en diferencias
Definiciones
- Ecuación en diferencias: Es una ecuación que contiene diferencias (Δ).
- Diferencias hacia adelante:
, 
- Diferencias hacia atrás:
, 
- Forma canónica de una ecuación en diferencias hacia adelante: Se obtiene luego de simplificar Δ y reemplazar T,

- Forma canónica de una ecuación en diferencias hacia atrás: Se obtiene luego de simplificar Δ y reemplazar T,

Ecuación en diferencias a partir de una ecuación diferencial:
Supongamos que deseamos discretizar la ecuación
, para ello debemos notar que
(diferencias hacia atrás) y por ende podemos reescribir la ecuación como
, de forma tal, el problema original se convierte en 
Ejemplo: Ecuación en diferencias hacia atrás de orden 2
Resolver la ecuación en diferencias dada por 
Solucionamos aprovechando la relación de recurrencia:
Nota: Es posible utilizar más de un método de discretización para aproximar las derivada, por ejemplo el método de Runge-Kutta4 o el método de Heun.
Comparación entre solución discretizada y la solución de la ecuación diferencial discretizada
Supongamos que tenemos la ecuación
, al discretizar con T llegamos a la expresión
. Para resolver esta ecuación en el intervalo
podemos implementar el siguiente código ode = diff(y)+a*y-exp(-t)==0
ode(t) =

ySol(t)=dsolve(ode,cond)
ySol(t) = 
for k=[1:length(time)-1]+1
yDis(k)=(1-a*T)*yDis(k-1)+T*exp(-T*(k-1));
%%%%%%% Comparación entre soluciones
legend({'Continuous','Discrete'})
T implícito vs T explícito
Una vez se ha obtenido la ecuación en diferencias a partir de la ecuación diferencial es posible omitir el instante en el tiempo y concentrarse solo en el número de muestreo actual (T implícito). Para graficar adecuadamente es necesario recordar que
.
Solución analítica de una ecuación en diferencias
De la misma forma que se pueden solucionar las ecuaciones diferenciales LTI, es posible plantear un problema de autovalores para las ecuaciones en diferencias. Sea tal solución
, reemplazamos en la ecuación en diferencias
para obtener
, ahora, introduciendo el cambio de variable
tenemos que
, lo cual se cumplirá para
. Resta notar entonces que
para encontrar las soluciones de la ecuación.
Primer ejemplo de solución analítica
Segundo ejemplo de solución analítica: lambda imaginario
Tercer ejemplo de solución analítica: Ceros que no tienen sentido
Clase 4: Transformada de Laplace
Definición: Transformada de Laplace
Transformadas básicas transformada de Laplace
Propiedades básicas transformada de Laplace
Clases 5 y 6: Transformada Z
Concepto de función muestreada
A partir de una función cualquiera
, definiremos la función muestreada
con intervalo de muestreo T como se sigue Debe ser claro que 
Transformada Z
Aplicando la transformada de Laplace a una función muestreada obtenemos que
, ahora, haciendo el cambio de variable
, llegamos a que
, adicionalmente, sabiendo que T actúa como una variable muda se sigue que podemos asumir
y considerar
Transformadas básicas
Propiedades operacionales
Transformada Z inversa
Notando que la transformada Z de una función es una fracción propia, es posible calcular la transformada Z inversa mediante procedimientos:
- Método de la serie infinita de potencias: Se procede mediante división larga. Los coeficientes de la división corresponden con los valores de la función en cada instante de muestreo.

- Desarrollo en fracciones parciales: Se debe garantizar que cada fracción parcial sea una función propia. De forma tal, buscamos reconocer estructuras a partir de las cuales aplicar la tabla de transformadas básicas y propiedades operacionales.
- Integral de inversión: Es posible calcular la transformada inversa por definición, sin embargo, será necesario resolver una integral compleja por el teorema del residuo de Cauchy. Este método no se utiliza en clase.
Solución de ecuaciones en diferencias aplicando transformada Z en MatLab
Supongamos que queremos resolver la siguiente ecuación en diferencias sujeta a condiciones iniciales
Solución mediante fracciones parciales
Solución analítica
%y(k+3)+0.8*y(k+2)==0 % y(0)=1, y(1)=0, and y(2)=1.
syms y(k) z %se declara la función simbólica y(k) y la variable simbólica z
assume(k>=0 & in(k,'integer')) % se establece que k es entero mayor o igual a 0
f = y(k+3)+0.8*y(k+2)==0 % se declara la ecuación en diferencias
f =

fZT = ztrans(f,k,z) %transformada z de la ecuación en diferencias, la variable k pasa a z
fZT =

syms pZT %variable para resolver la ecuación
fZT = subs(fZT,ztrans(y(k),k,z),pZT) % se sustituyen las expresiones de Y(z) por la variable simbólica pZT
fZT =

pZT = solve(fZT,pZT) % se soluciona la ecuación para pZT=Y(Z)
pZT =

pZT = subs(pZT,[y(0) y(1) y(2)],[1 0 1]) % se sustituyen los valores de las condiciones iniciales para obtener la fracción Y(z)
pZT =

pZT=partfrac(pZT) % esta línea de código ayuda a evidenciar la descomposición en fracciones parciales
pZT =

ySol = iztrans(pZT,z,k) % se aplica la transformada inversa, la variable z pasa a k
ySol =

ySol = simplify(ySol) % de ser posible se simplifica la expresión resultante, esta es la solución de la ecuación en diferencias
ySol =

Gráfica de la solución analítica
kValues = 0:10; %instantes de muestreo
T=0.2;% intervalo de muestreo
ySolValues = subs(ySol,k,kValues); %evaluamos los valores de k en la solución
ySolValues = double(ySolValues); % pasamos los valores de simbólico a variable numérica
ySolValues = real(ySolValues); % capturamos la parte real de los valores
stem(kValues*T,ySolValues) %gráfica de la función discretizada
title('Solution of equation')
Solución mediante la serie infinita de potencias
Para resolver la ecuación mediante la serie infinita de potencias debemos aplicar la transformada Z y llegar a la expresión racional
. Para el caso del ejemplo que estamos resolviendo tenemos que
. Podemos aplicar la división larga para obtener los primeros 11 valores de la función (equivalentes a los puntos de la gráfica anterior) mediante la función ldiv desarrollada por Tamer Melik. El primer argumento que recibe esta función son los coeficientes del numerados, luego los coeficientes del denominador y finalmente el número de valores de la función por obtener yvals=ldiv([5,4,5],[5,4],11)
1.0000 0 1.0000 -0.8000 0.6400 -0.5120 0.4096 -0.3277 0.2621 -0.2097 0.1678
Clases 7 y 8: Introducción a las funciones de transferencia
x=[-4:0.001:4]; y=x; x1=x;
z=exp(y1+i*x1); th1=abs(z); rho1=angle(z);
Gd = tf([1 1 0],[1 0 -0.25],'Ts',1); step(Gd); axis([0,6,0,3])
Funciones adicionales para el curso
function funresult=ldiv(a,b,N)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Function (ldiv) : calculate inverse Z-transform by long division
% Author : Tamer mohamed samy abdelazim Mellik
%Department of Electrical & Computer Engineering,
%2500 University Drive N.W. ,
% email :abdelasi@enel.ucalgary.ca
% email : tabdelaz@ucalgary.ca
% Webpage : http://www.enel.ucalgary.ca/~abdelasi/
% This function like deconv but it help if the numerator less or equal degree of denominator
% if you have this function (It must arranged in terms of minus power of Z):
% G(z)= -----------------
% and you want to calculate long division or inverse Z transform :
% The numerator is a=[1] and the denominator is b= [5 -1 -3 ]
% call the function ldiv(a,b) to get the funresult 20 items (default)
% a=[5 0 -3 4] , b= [5 -1 -3 ] and you want the funresult 100 terms !
% Note : The author doesn't have any responsibility for any harm caused by the use of this file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%default order of the filter == 20
disp('Usage: M = ldiv(a,b,N)')
disp('a:numerator , b denominator and N is the order of the resultant filter')
disp('Error: numerator must at least have one element not empty')
disp('Error: denominator must at least have one element not empty')
disp('Error: The first element of denominator must have nonzero value')
for i =length(funresult)+1:N
a(k)=a(k)-funresult(length(funresult))*b(k);